/**********************************************************************************
 * $URL$
 * $Id$
 ***********************************************************************************
 *
 * Copyright (c) 2003, 2004, 2005, 2006 The Sakai Foundation.
 *
 * Licensed under the Educational Community License, Version 1.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.opensource.org/licenses/ecl1.php
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 **********************************************************************************/

package uk.ac.cam.caret.sakai.rwiki.service.api;

/**
 * A page link render renders links for the render engine
 * 
 * @author andrew
 */
// FIXME: Service
public interface PageLinkRenderer
{
	/**
	 * create a view link by appending it to the buffer
	 * 
	 * @param buffer
	 * @param name
	 * @param view
	 */
	void appendLink(StringBuffer buffer, String name, String view);

	/**
	 * Create a view link with an anchor by appending it to the buffer
	 * 
	 * @param buffer
	 * @param name
	 * @param view
	 * @param anchor
	 */
	void appendLink(StringBuffer buffer, String name, String view, String anchor);

	/**
	 * append a create link to the buffer
	 * 
	 * @param buffer
	 * @param name
	 * @param view
	 */
	void appendCreateLink(StringBuffer buffer, String name, String view);

	/**
	 * @param cachable
	 */
	void setCachable(boolean cachable);

	/**
	 * After rendering is the result cachable
	 * 
	 * @return
	 */
	boolean isCachable();

	/**
	 * Before rendering, can we use a chached version
	 * 
	 * @return
	 */
	boolean canUseCache();

	/**
	 * If true the rendered may use the cache, if false it should not
	 * 
	 * @param b
	 */
	void setUseCache(boolean b);

	/**
	 * append an auto generated link to the buffer.
	 * @param buffer
	 * @param name
	 * @param view
	 * @param anchor
	 * @param autoGenerated TODO
	 */
	void appendLink(StringBuffer buffer, String name, String view, String anchor, boolean autoGenerated);

}
